# 4、 实现一个 用户系统
# 实现 用户的 注册、登录、修改密码、删除用户
# 要求：用户名不能重复、数据必须存储在 json文件中
# 用户名 长度 必须在6-20位之间，删除用户，必须校验用户密码
# 修改密码，需要输入原密码与新密码，且 新密码不能与旧密码一致

import json

# 从data.json中读取文件
f = open('data.json', 'r', encoding='utf-8')   # 已读的方式打开文件
data = json.load(f)
f.close()

print("欢迎来到xxx 用户系统，请输入您的操作指令")
print('退出: 0')
print('注册: 1')
print('登录: 2')
print('修改密码: 3')
print('删除用户: 4')
while True:
    flag = input("请输入您的指令:")
    if flag == '1':
        username = input("请输入用户名:")
        if username in data:
            print("用户名已存在")
        elif len(username) < 6 or len(username) > 20:
            print("用户名格式错误")
        else:
            password = input("请输入密码")
            data[username] = password
            print("注册成功")
    elif flag == '2':
        username = input("请输入用户名：")
        if username not in data:
            print("用户名不存在，请注册后再登录")
        else:
            password = input("请输入密码")
            while password != data[username]:
                print("密码错误")
                password = input("请输入密码")
            print("登录成功")
            # if password == data[username]:
            #     print("登录成功")
            # else:
            #     print("登录失败")
    elif flag == '3':
        username = input("请输入用户名:")
        if username not in data:
            print("用户名不存在")
        else:
            password = input("请输入原密码:")
            if password != data[username]:
                print("密码不一致，无法修改密码")
            else:
                new_password = input("请输入新密码:")
                while new_password == password:
                    print("两次输入的密码一致，修改密码失败")
                    new_password = input("请输入新密码:")
                data[username] = new_password
                print("修改密码成功")
                # if new_password == password:
                #     print("修改密码失败")
                # else:
                #     data[username] = new_password
    elif flag == '4':
        deluser = input("请输入要删除的用户:")
        if deluser not in data:
            print("该用户不存在")
        else:
            password = input("请输入密码:")
            if password == data[deluser]:
                data.pop(deluser)
            else:
                print("删除失败")
    elif flag == '0':
        break
    else:
        print("您输入的指令有误")


# 将字典a 写入一个json文件中
f = open('data.json', 'w', encoding='utf-8')  # 以写的方式打开文件
json.dump(data, f, ensure_ascii=False)
f.close()  # 关闭文件